import { getUserInfo } from '../../api/index.js'

Page({
  /**
   * 页面的初始数据
   */
  data: {
    classInfo: [],
    activeClass: {}
  },

  //   获取学生选课的信息
  async togetUserInfo() {
    const res = await getUserInfo()
    if (res.code === 200) {
      const classInfo = res.data.school.map((item, index) => {
        {
          if (index === 0) {
            item.active = true
          } else {
            item.active = false
          }
          item.score = this.generateRandomScore()
          return item
        }
      })
      this.setData({ classInfo })
      this.setData({ activeClass: this.data.classInfo[0] })
    }
  },
  generateRandomScore() {
    // 定义一个函数来生成68到90之间的总得分
    const totalScore = Math.floor(Math.random() * (90 - 68 + 1)) + 68

    // 定义一个函数来生成在最小值和最大值之间的随机分数
    function getRandomScore(min, max) {
      return Math.floor(Math.random() * (max - min + 1)) + min
    }

    // 根据给定的限制生成签到得分和平时测验得分
    const signScore = getRandomScore(5, 10)
    const quizScore = getRandomScore(20, 30)

    // 计算期末考试得分的最大可能值，确保总得分在68到90之间
    const maxFinalExamScore = Math.min(60, totalScore - signScore - quizScore)
    // 期末考试得分的范围是35到最大可能值
    const finalExamScore = getRandomScore(35, maxFinalExamScore)

    // 确保总得分是准确的，如果有偏差，调整平时测验得分
    const calculatedTotalScore = signScore + quizScore + finalExamScore
    const quizScoreAdjustment = totalScore - calculatedTotalScore
    // 确保调整后的平时测验得分在允许的范围内
    const adjustedQuizScore = Math.min(quizScore + quizScoreAdjustment, 30)

    // 创建并返回对象
    return {
      signScore: signScore,
      quizScore: adjustedQuizScore,
      finalExamScore: finalExamScore,
      totalScore: totalScore
    }
  },

  handleClickItem(event) {
    const num = event.currentTarget.dataset.index

    // 左侧导航栏设置
    this.setData({
      classInfo: this.data.classInfo.map((item) => ({ ...item, active: false }))
    })

    this.setData({
      classInfo: [
        ...this.data.classInfo.slice(0, num), // 复制前 num 个元素
        { ...this.data.classInfo[num], active: true }, // 更新 num 索引处的元素
        ...this.data.classInfo.slice(num + 1) // 复制 num 后面的元素
      ]
    })

    // 右侧内容设置
    this.setData({ activeClass: this.data.classInfo[num] })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.togetUserInfo()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {},

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {},

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    setTimeout(() => {
      wx.stopPullDownRefresh()
      wx.reLaunch({
        url: '/pages/myClass/myClass'
      })
    }, 300)
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {}
})
